﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ent.Inscripcion.Core;
using Ent.Inscripcion.Presentacion.ServicioSyllabusResec;
using Ext.Net;
using Ent.Inscripcion.Core.Core;
using Ent.Inscripcion.Core.Administracion;

namespace Ent.Inscripcion.Presentacion.Administracion
{
    public partial class AdministrarOfertas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                   CargarOfertasActivas();
                    /*var servicio = new ServiceResec();
                    var periodos = servicio.CargarPeriodos('A');
                    //var periodos = "{\"Created\":[{\"Codigo\":\"34\",\"Nombre\":\"Octubre 2011 - Febrero 2012\",\"Descripcion\":\"Octubre 2010 - Febrero 2011\"},{\"Codigo\":\"192\",\"Nombre\":\"Octubre 2011 - Febrero 2012\",\"Descripcion\":\"Octubre 2011 - Febrero 2012\"},{\"Codigo\":\"23\",\"Nombre\":\"Abril 2010 - Agosto 2010\",\"Descripcion\":\"Abril 2010 - Agosto 2010\"},{\"Codigo\":\"189\",\"Nombre\":\"Abril 2011 - Agosto 2011\",\"Descripcion\":\"Abril 2011 - Agosto 2011\"}]} ";
                    var sdhItems = new StoreDataHandler(periodos);
                    var crItems = sdhItems.ObjectData<InfoServicio>();
                    var infoServicios = InfoServicios.NewInfoServicios();
                    foreach (var item in crItems.Created)
                    {
                        var itemServicio = InfoServicio.NewInfoServicio();
                        itemServicio.Codigo = item.Codigo;
                        itemServicio.Nombre = item.Nombre;
                        itemServicio.Descripcion = item.Descripcion;
                        infoServicios.Add(itemServicio);
                    }
                    var lista = infoServicios.OrderByDescending(p => int.Parse(p.Codigo)).ToList();
                    */
                   stoPeriodosAcademicos.DataSource = CatalogoItemLista.GetListaCatalogos("PERIODOACADEMICO");
                    stoPeriodosAcademicos.DataBind();
                }
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex);
            }
            
        }

        void CargarOfertasActivas()
        {
            var listaOfertas = OfertaTutoriaLista.GetOfertaTutoriaLista();
            stoOfertasActivos.DataSource = listaOfertas;
            stoOfertasActivos.DataBind();
        }

        /// <summary>
        /// Acepta la confiu=guracion del periodo para la oferta de horarios de tutorias
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAceptar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                try
                {
                    OfertaTutoria oferta;
                    Guid idOferta;
                    Guid.TryParse(e.ExtraParams["Id"], out idOferta);
                    var fechaInicio = e.ExtraParams["FechaInicio"];
                    var fechaFin = e.ExtraParams["FechaFin"];
                    var periodo = e.ExtraParams["Periodo"];
                    var nombre = e.ExtraParams["Nombre"];
                    var descripcion = e.ExtraParams["Descripcion"];
                    var accion = e.ExtraParams["Accion"];
                    DateTime fi, ff;
                    DateTime.TryParse(fechaInicio, out fi);
                    DateTime.TryParse(fechaFin, out ff);
                    if (accion=="Editar")
                        oferta = OfertaTutoria.GetOfertaTutoria(idOferta);
                    else
                        oferta = OfertaTutoria.NewOfertaTutoria();
                    oferta.FechaFin = ff;
                    oferta.FechaInicio = fi;
                    oferta.PeriodoId = periodo;
                    oferta.Descripcion = descripcion;
                    oferta.Nombre = nombre;
                    oferta.Estado = 1;
                    oferta.Save();
                    e.Success = true;
                    CargarOfertasActivas();
                }
                catch (Exception ex)
                {
                    e.Success = false;
                    Util.RegistarLog(ex);
                }
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }

        /// <summary>
        /// Permite manejar la accion realizada sobre un Docente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ManejarAccion(object sender, DirectEventArgs e)
        {
            try
            {
                Guid idOferta = Guid.Parse(e.ExtraParams["Id"]);
                string opcion = e.ExtraParams["Comando"];
                var oferta = OfertaTutoria.GetOfertaTutoria(idOferta);
                dtfFechaInicio.SetValue(oferta.FechaInicio);
                dtfFechaFin.SetValue(oferta.FechaFin);
                cbxPeriodo.SetValue(oferta.PeriodoId);
                txtNombre.SetValue(oferta.Nombre);
                txaDescripcion.SetValue(oferta.Descripcion);
                hidAccionPeriodo.Text = "Editar";
                hidIdPeriodo.Text = idOferta.ToString();
                winEstablecerPeriodo.Show();
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }

    }
}